home *** CD-ROM | disk | FTP | other *** search
- 100 REM GUESS THE ANIMAL
- 110 REM MODIFIED FOR MICROSOFT BASIC BY
- 120 REM SELDEN MCCABE, SAN DIEGO, CALIF
- 130 REM LAST UPDATED 07/02/83
- 500 REM *** THEN DOWNLOADED 2/14/87 FROM ARTIFICIAL INTELLIGENCE
- 501 REM *** FORUM (AIE) DL15 BY JIM FLEMING, FALLS CHURCH, VA
- 502 REM *** THEN MODIFIED FOR C64 BASIC V2 AND UPLOADED TO CBMPRG
- 503 REM *** HAPPY VALENTINE'S DAY!
- 1000 PRINT
- 1001 PRINT
- 1002 PRINT "*******************************"
- 1003 PRINT "* *"
- 1004 PRINT "* GUESS THE ANIMAL *"
- 1005 PRINT "* *"
- 1006 PRINT "* A PROGRAM THAT LEARNS *"
- 1007 PRINT "* *"
- 1008 PRINT "*******************************"
- 1009 PRINT
- 1010 PRINT "THINK OF AN ANIMAL, AND I WILL TRY TO GUESS IT."
- 1011 DIM A$(400)
- 1012 OPEN2,8,2,"0:ANIMALDATA,S,R"
- 1013 INPUT#2,N
- 1014 FOR I=1 TO N
- 1015 INPUT#2,A$(I)
- 1016 NEXT I
- 1017 CLOSE 2
- 1018 A$(0)=STR$(N)
- 1019 GOTO 1300
- 1290 REM *** YES, NO, LIST, OR SAVE..DON'T FORGET TO SAVE BEFORE A NO,
- 1291 REM *** IF YOU WANT ANIMAL TO RETAIN WHAT YOU'VE TAUGHT IT THIS SESSION.
- 1300 PRINT "ARE YOU THINKING OF AN ANIMAL(Y,N,L,S)?"
- 1301 INPUT L$
- 1302 GOSUB 3100
- 1303 Z9$=L$
- 1304 IF Z9$="Y" THEN GOTO 1350
- 1305 IF Z9$="N" THEN GOTO 4000
- 1306 IF Z9$="L" THEN GOTO 1320
- 1307 IF Z9$<>"S" THEN GOTO 1330
- 1308 OPEN2,8,2,"@0:ANIMALDATA,S,W"
- 1309 PRINT#2,VAL(A$(0))
- 1310 FOR I=1 TO VAL(A$(0))
- 1311 PRINT#2,A$(I)
- 1312 NEXT I
- 1313 CLOSE2
- 1314 GOTO 1300
- 1320 PRINT "ANIMALS I ALREADY KNOW ARE:"
- 1321 FOR I=1 TO VAL(A$(0))
- 1322 IF LEFT$(A$(I),2)="\A" THEN PRINT MID$(A$(I),3)
- 1323 NEXT I
- 1324 PRINT
- 1325 GOTO 1300
- 1330 PRINT "PLEASE TYPE YES, NO, SAVE, OR LIST."
- 1331 GOTO 1300
- 1340 REM ***** BEGIN GUESSING *****
- 1350 K=1
- 1360 GOSUB 3000
- 1400 K=K1
- 1410 IF (LEN(A$(K))=0) THEN GOTO 3000
- 1420 IF (LEFT$(A$(K),2)="\Q") THEN GOTO 1360
- 1430 PRINT "IS IT A ";MID$(A$(K),3);
- 1440 INPUT L$
- 1450 GOSUB 3100
- 1460 Z7$=L$
- 1470 IF Z7$="Y" THEN PRINT "WHY NOT TRY ANOTHER ANIMAL?"
- 1480 IF Z7$="Y" THEN GOTO 1300
- 1500 PRINT "I GIVE UP! WHAT ANIMAL WERE YOU THINKING OF "
- 2000 INPUT Z9$
- 2010 IF LEN(Z9$)<2 THEN GOTO 1500
- 2050 PRINT "PLEASE TYPE IN A QUESTION THAT WOULD DISTINGUISH A ";
- 2059 PRINT Z9$;" FROM A ";MID$(A$(K),3)
- 2070 INPUT Z8$
- 2100 PRINT "FOR A ";Z9$;" THE ANSWER WOULD BE";
- 2110 INPUT L$
- 2115 GOSUB 3100
- 2116 Z7$=L$
- 2130 IF Z7$="Y" THEN Z6$="N":GOTO2140
- 2135 IF Z7$<>"N" THEN 2100
- 2140 IF Z7$="N" THEN Z6$="Y"
- 2200 Z1=VAL(A$(0))+1
- 2210 A$(0)=STR$(Z1+1)
- 2220 A$(Z1)=A$(K)
- 2230 A$(Z1+1)="\A"+Z9$
- 2240 A$(K)="\Q"+Z8$+"\"+Z7$+STR$(Z1+1)+"\"+Z6$+STR$(Z1)+"\"
- 2300 GOTO 1300
- 2890 REM
- 2900 REM *** SUBROUTINE TO ASK QUESTION AND DECIDE WHAT QUESTION TO
- 2910 REM *** ASK NEXT OR WHAT ANIMAL IT IS
- 3000 REM K = CURRENT QUESTION, K1 = NEXT QUESTION
- 3001 S1=LEN(A$(K))
- 3002 FORI1=3TOS1:IF(MID$(A$(K),I1,1)="\")THEN3010
- 3003 NEXTI1
- 3010 PRINT MID$(A$(K),3,(I1-3));
- 3020 INPUT L$
- 3030 GOSUB 3100
- 3035 Z9$=L$
- 3040 IF Z9$<>"Y" THEN Z9$="N"
- 3050 FORZ1=3TOS1:IF(MID$(A$(K),Z1,2)="\"+Z9$)THEN3058
- 3052 NEXTZ1
- 3058 Z1=Z1+2
- 3060 FORZ2=Z1TOS1:IF(MID$(A$(K),Z2,1)="\")THEN3068
- 3062 NEXTZ2
- 3068 Z2=Z2-1
- 3070 K1=VAL(MID$(A$(K),Z1,Z2))
- 3080 RETURN
- 3100 REM SUBROUTINE TO TURN LOWER CASE INTO UPPER CASE
- 3110 A0=ASC(L$)
- 3120 IF A0>96 AND A0<123 THEN A0=A0-32
- 3130 L$=CHR$(A0)
- 3140 RETURN
- 3190 REM *** ONE-TIME UPPER-TO-LOWER CASE RTN,CALLED BY GOSUB APPENDED TO 1015
- 3191 REM *** NEEDED ONLY IF SEQ DATA FILE OBTAINED VIA NON-C64 MEANS
- 3192 REM *** IF U RESPOND "LIST" TO THE "ARE U THINKING OF AN ANIMAL" QUESTION
- 3193 REM *** AND GET NO ANIMALS LISTED, THEN U NEED TO EXECUTE THIS RTN ONCE,
- 3194 REM *** BY APPENDING A GOSUB3200 TO 1015, AND EXECUTE PROGRAM ONE-TIME.
- 3195 REM *** ALTERNATELY, USE ANY OF SEVERAL LOCASE CONVERSION UTILITIES AROUND
- 3200 S1=LEN(A$(I))
- 3205 S2$=""
- 3210 FORI1=1TOS1
- 3220 A0=ASC(MID$(A$(I),I1,1))
- 3230 IFA0>192ANDA0<223THENA0=A0-128
- 3240 S2$=S2$+CHR$(A0)
- 3250 NEXTI1
- 3255 A$(I)=S2$
- 3260 RETURN
- 4000 PRINT
- 4010 PRINT "OK. SEE YOU LATER. HOPE YOU HAD FUN PLAYING."
-